/**
 * 入口文件，每个页面应该引入其中，已经预先加载完以下模块：
 *
 * + jquery, util (config.js)
 * + jquery, layer, laytpl, setter (view.js)
 * + element (admin.js)
 * + form, setter, admin, view（当前文件）
 */

(function(layui) {
  'use strict';

  var MODULE_NAME = 'index';

  layui.extend({
    setter: '../config',
    view  : 'core/view',
    admin : 'core/admin'
  }).define(['form', 'setter', 'view', 'admin'], function(exports) {
    var $ = layui.jquery;
    var element = layui.element;
    var setter = layui.setter;
    var admin = layui.admin;

    var FILTER_PAGETABS = 'layadmin-pagetabs';

    // 打开标签页
    var openPage = function(/* url, id, text, tips*/) {
      var args = Array.prototype.slice.call(arguments);
      var argsLen = args.length;
      var option = {};

      if (argsLen === 1 && $.isPlainObject(args[0])) {
        option = args[0];

        if (!('url' in option) || !('id' in option) || !('text' in option)) {
          this.hint('打开新标签的参数配置有误');
        }

        !option.tip && (option.tip = option.text);
        // option.url = admin.getAbsolutePath(option.url);
      } else if (argsLen >= 3) {
        // option.url = admin.getAbsolutePath(args[0]);
        option.url = args[0];
        option.id = args[1];
        option.text = args[2];
        option.tip = args[argsLen >= 4 ? 3 : 2];
      } else {
        this.hint('标签打开失败');
        return;
      }

      var matchTo;
      var $tabs = $('#' + FILTER_PAGETABS).find('.layui-tab-title > li');
      $tabs.each(function(index) {
        var layId = $(this).attr('lay-id');

        if (layId === option.id || layId === option.url) {
          matchTo = true;
          admin.tabsPage.index = index;
          admin.tabsPage.id = option.id || option.url;
        }
      });

      if (setter.pagetabs) {
        if (!matchTo) {
          element.tabAdd(FILTER_PAGETABS, {
            title  : '<span title="' + option.tip + '">' + option.text + '</span>',
            id     : option.id || option.url,
            url    : option.url,
            attr   : option.id || option.url,
            content: '<iframe src="' + option.url + '" class="layadmin-iframe" name="' + option.id + '" data-id="' + option.id + '" allowfullscreen="true" frameborder="no"></iframe>'
          });
          admin.tabsPage.index = $tabs.length;
          admin.tabsPage.id = option.id || option.url;
        }
      } else {
        var $frame = admin.pagetabsBody(admin.pagetabs.index).find('iframe');
        $frame[0].contentWindow.location.href = option.url;
      }

      // 定位当前tabs
      element.tabChange(FILTER_PAGETABS, option.id || option.url);
    };

    if (admin.screen() < 2) {
      admin.sideFlexible();
    }

    // 扩展目录下的其它模块
    layui.each(setter.extend, function(index, item) {
      var mods = {};
      mods[item] = '{/}' + setter.base + 'extends/' + item;
      layui.extend(mods);
    });

    layui.extend({
      'common': 'modules/common'
    }).use('common');

    // layui.config({
    //   base: layui.cache.base + 'modules/'
    // }).use('common');

    exports(MODULE_NAME, { openPage: openPage });
  });
})(layui);
